Existing approaches for performing software updates—e.g., operating system (OS) updates—can be task-intensive and prone to error. For example, a common approach for updating an OS of a computing device can involve the following steps: (1) receiving an OS update package at the computing device, (2) unpacking the OS update package, (3) performing the update (in accordance with the OS update package) to produce an updated OS, and (4) rebooting the computing device/loading the updated OS. Unfortunately, when step (3) is carried out, the computing device enters into a vulnerable state where particular events can potentially render the computing device inoperable, e.g., when a power failure occurs, when the software update fails, and so on.
Accordingly, there exists a need for a more efficient and stable technique for managing software updates on computing devices.